package reflect;

/**
 * 字节码对象的获取
 */
public class ClassDemo01 {
    public static void main(String[] args) throws ClassNotFoundException {
        //1.通过类名.class的方式获取类的字节码对象(类对象)
        //类加载器相同，类名也相同的类，在内存中其字节码对象只有一份
        Class c1=Integer.class;
        Class c2=Integer.class;
        System.out.println(c1==c2);//true
        //2.通过对象实例.getClass()方式获取类对象
        Class c3=new Integer(100).getClass();
        System.out.println(c2==c3);//true
        //3.通过Class.forName("全类名")的方式获取类对象
        Class c4=Class.forName("java.lang.Integer");
        System.out.println(c3==c4);//true
        System.out.println(c4.getName());//java.lang.Integer
        System.out.println(c4.getSimpleName());//Integer
        System.out.println(c4.getPackage().getName());//java.lang
        System.out.println(c4.getSuperclass().getName());//java.lang.Number
        System.out.println(c4.getInterfaces()[0].getName());//java.lang.Comparable
        System.out.println(c4.getClassLoader());//null->BootStrapClassLoader(根类加载器)
        System.out.println(ClassDemo01.class.getClassLoader());

    }
}
